/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package bs.stock.web;

import bs.stock.modelo.Producto;
import bs.stock.modelo.TipoProducto;
import bs.stock.rn.ProductoRN;
import bs.stock.rn.TipoProductoRN;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author Claudio
 */
@ManagedBean(name="buscadorProductoBean")
@ViewScoped
public class BuscadorProductoBean implements Serializable {

    @EJB private ProductoRN productoRN;
    @EJB private TipoProductoRN tipoProductoRN;

    private Producto producto;
    private List<Producto> lista;
    private List<TipoProducto> listaTipos;
    private TipoProducto tipoProducto;

    Map<String,String> filtro;

    private String txtBusqueda;    

    /** Creates a new instance of BuscadorProductoBean */
    public BuscadorProductoBean() {

    }

    @PostConstruct
    public void init(){
        
        producto = new Producto();        
        listaTipos = tipoProductoRN.getLista();
        filtro = new HashMap<String,String>();
        txtBusqueda = "";
        lista = productoRN.getProductoByBusqueda(txtBusqueda, false);            
        
        if(!listaTipos.isEmpty()){
            tipoProducto = listaTipos.get(0);
        }
    }
    
    public void buscar(){
        
        filtro.clear();

        if(tipoProducto!=null){
            filtro.put("tipoProducto.tippro = ", "'"+tipoProducto.getTippro()+"'");
        }
        
        lista = productoRN.getProductoByBusqueda(filtro,txtBusqueda, false);                
    }
   
    public void limpiarProducto(){
        producto =null;
    }

    public void seleccionarProducto(Producto p){
        producto = p;
//        System.out.println("Producto seleccionado: " + p.getDescrp());
    }
    
    public List<Producto> completeProducto(String query) {
        try {
            lista = productoRN.getProductoByBusqueda(query, false);
            return lista;
            
        } catch (Exception ex) {

            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
            return new ArrayList<Producto>();
        }


    }

    //---------------------------------------------------------------------------
    
    public List<Producto> getLista() {
        return lista;
    }

    public void setLista(List<Producto> lista) {
        this.lista = lista;
    }
    
    

    public Producto getProducto() {
        return producto;
    }

    public void setProducto(Producto producto) {
        this.producto = producto;
    }

    public Map<String, String> getFiltro() {
        return filtro;
    }

    public void setFiltro(Map<String, String> filtro) {
        this.filtro = filtro;
    }

    public List<TipoProducto> getListaTipos() {
        return listaTipos;
    }

    public void setListaTipos(List<TipoProducto> listaTipos) {
        this.listaTipos = listaTipos;
    }

    public TipoProducto getTipoProducto() {
        return tipoProducto;
    }

    public void setTipoProducto(TipoProducto tipoProducto) {
        this.tipoProducto = tipoProducto;
    }

    public String getTxtBusqueda() {
        return txtBusqueda;
    }

    public void setTxtBusqueda(String txtBusqueda) {
        this.txtBusqueda = txtBusqueda;
    }
    

}
